Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.06.2014, 16:12
Новичок на форуме
Отправить личное сообщение для MMXi Посмотреть профиль Найти все сообщения от MMXi
 
Регистрация: 30.06.2014
Сообщений: 1

Node.js, lodash преобразовать массив
Node.js, lodash, нужно преобразовать массив следующего вида

var arr = [
                {keys: [1, 2, 3], generator: 'a'},
                {keys: [1, 3], generator: 'b'}];


к такому:

var arr = [
                {key: 1, generator: 'a'},
                {key: 2, generator: 'a'},
                {key: 3, generator: 'a'},
                {key: 1, generator: 'b'},
                {key: 3, generator: 'b'}]


Помогите, пожалуйста, кто знает как просто сделать подобное преобразование.
Ответить с цитированием
  #2 (permalink)  
Старый 30.06.2014, 16:46
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

В js у массивов есть метод .reduce. В принципе, такой метод есть и в Lo-Dash. Наверное, работает похоже. С нативным методом выглядит так:
arr = arr.reduce(function (array, item) {
  return array.concat( item.keys.map(convert, item) );
  
  function convert(key) {
    return { key: key, generator: this.generator };
  }
}, []);
Ответить с цитированием
  #3 (permalink)  
Старый 30.06.2014, 17:42
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

Вариант без понтов:
isEmpty=function(arr){return arr.toString()===""}
replace=function(arr){
   var newarr=[]
   for(var i in arr){
        if(arr[i].keys&&arr[i].generator){
            while(!isEmpty(arr[i].keys)){
               newarr.push({key: arr[i].keys[0], generator: arr[i].generator})
               arr[i].keys=arr[i].keys.slice(1)
            }
        }
   }
   return newarr
}

Последний раз редактировалось foo, 30.06.2014 в 17:50.
Ответить с цитированием
  #4 (permalink)  
Старый 07.12.2014, 10:48
Интересующийся
Отправить личное сообщение для Tungus Посмотреть профиль Найти все сообщения от Tungus
 
Регистрация: 19.02.2014
Сообщений: 16

Добрый день!
Я правильно понял, в данном случае двумерный массив преобразован в объекты - не массивы, каждый из которых являлся элементов массива и тоже массивом?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как преобразовать объект в упорядоченный массив Shitbox2 Общие вопросы Javascript 15 09.06.2014 18:23
Востребованность разработчиков на Node.js danik.js AJAX и COMET 7 08.12.2012 22:49
преобразовать php массив в массив js zebulun Общие вопросы Javascript 12 02.09.2011 00:49
Как создать многомерный массив FRIE Общие вопросы Javascript 29 02.06.2010 19:14
Подскажите, как вернуть js-скрипт массив Polkan AJAX и COMET 18 30.04.2010 23:30